package maquinavirtual;

import gestor.Gestor;
import java.io.File;
import javax.swing.JFileChooser;
import sintactico.AnalizadorSintactico;

public class GestorEjecutar {

	/*CONSTRUCTORA*/
	public GestorEjecutar(){}
	
	
	public void errorLlamada(){
		System.out.println("Error en el paso de argumentos, debe ser: java -jar (-t para activar el modo traza) ejecuta.jar <compilado.cmp>" +
				", la llamada se debe efectuar desde el mismo directorio donde se encuentre el archivo");
		System.exit(-1);
	}

	public void ejecutar(String fuente, boolean modotraza) throws Exception {
		if(fuente.endsWith(".cmp")){
			MemoriaInstrucciones mi=new MemoriaInstrucciones(fuente);
			InterpreteP interprete= new InterpreteP(mi,modotraza);
			interprete.principal();
			System.out.println("Fin de ejecucion");
		}else{
			this.errorLlamada();
		}
	}
	
	public static void main (String[]args) throws Exception	{
		GestorEjecutar gestorEj=new GestorEjecutar();
		if (args.length==1){
			boolean traza=false;
			File entrada = new File(args[0]);
			System.out.println("entrada: "+entrada);
			String fuente=entrada.getAbsolutePath();
			System.out.println(fuente);
			gestorEj.ejecutar(fuente,traza);
		}
		else if(args.length==2){
			if(!args[0].equals("-t"))
			gestorEj.errorLlamada();
			boolean traza=true;
			File entrada = new File(args[1]);
			System.out.println("entrada: "+entrada);
			String fuente=entrada.getAbsolutePath();
			System.out.println(fuente);
			gestorEj.ejecutar(fuente,traza);
		}
		else if (args.length!=1&&args.length!=2) 
			gestorEj.errorLlamada();
	}
	
	 
	
}
	